"""Definition of the Gobierno content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.ATContentTypes.content.base import ATCTContent, ATCTFolder

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import IGobierno
from guegue.alcaldias.config import PROJECTNAME

GobiernoSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Nombre de la entidad',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Descripción',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción del hermanamiento.')),
    atapi.ImageField('image',
              searchable=0,
              required=0,
              sizes= {'large'   : (768, 768),
                'preview' : (400, 400),
                'mini'    : (200, 200),
                'thumb'   : (128, 128),
                'tile'    :  (64, 64),
                'icon'    :  (32, 32),
                'listing' :  (16, 16),
               },
              widget=atapi.ImageWidget(label='Logo Institucional',
                                label_msgid="label_entry_image",
                                description_msgid="help_entry_image",
                                i18n_domain="guegue.alcaldias",
                                threshold=102400,
                                description='Logo Institucional')),
    atapi.StringField('telefono',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Teléfono',
                                      label_msgid="label_entry_telefono",
                                      description_msgid="help_entry_telefono",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('fax',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Fax',
                                      label_msgid="label_entry_fax",
                                      description_msgid="help_entry_fax",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('correo',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Correo Electrónico',
                                      label_msgid="label_entry_correo",
                                      description_msgid="help_entry_correo",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('direccion',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Dirección Física',
                                      size=80,
                                      label_msgid="label_entry_direccion",
                                      description_msgid="help_entry_direccion",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('contacto',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Nombre de Persona de Contacto',
                                      label_msgid="label_entry_cotacto",
                                      description_msgid="help_entry_contacto",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('cargo',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Cargo de Persona de Contacto',
                                      label_msgid="label_entry_cargo",
                                      description_msgid="help_entry_cargo",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('telcontacto',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Teléfono persona de Contacto',
                                      label_msgid="label_entry_telcontacto",
                                      description_msgid="help_entry_telcontacto",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('correocontacto',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Correo electrónico de la persona de Contacto',
                                      label_msgid="label_entry_correocontacto",
                                      description_msgid="help_entry_correocontacto",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.DateTimeField('fundacion',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha Fundación de la Entida',
                                      label_msgid="label_entry_fundacion",
                                      show_hm = False,
                                      description_msgid="help_entry_fundacion",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('mision',
                searchable=1,
                isMetadata=0,
                widget=atapi.TextAreaWidget(label='Misión',
                                      label_msgid="label_entry_mision",
                                      description_msgid="help_entry_mision",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('vision',
                searchable=1,
                isMetadata=0,
                widget=atapi.TextAreaWidget(label='Visión',
                                      label_msgid="label_entry_vision",
                                      description_msgid="help_entry_vision",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('proposito',
                searchable=1,
                isMetadata=0,
                widget=atapi.TextAreaWidget(label='Propósito de la Entidad',
                                      label_msgid="label_entry_proposito",
                                      description_msgid="help_entry_proposito",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('estructura',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Estructura del Organismo',
                                label_msgid="label_entry_estructura",
                                description_msgid="help_entry_estructura",
                                i18n_domain="guegue.alcaldias",
                                description="")),
    atapi.TextField('miembros',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Miembros/Integrantes',
                                label_msgid="label_entry_miembros",
                                description_msgid="help_entry_miembros",
                                i18n_domain="guegue.alcaldias",
                                description="")),
    atapi.TextField('logros',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Logros Alcanzados',
                                label_msgid="label_entry_logros",
                                description_msgid="help_entry_logros",
                                i18n_domain="guegue.alcaldias",
                                description="")),
    atapi.TextField('metas',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Metas Propuestas/Actividades a realizar',
                                label_msgid="label_entry_metas",
                                description_msgid="help_entry_metas",
                                i18n_domain="guegue.alcaldias",
                                description="")),
    atapi.TextField('funcionarios',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Funcionarios Responsables',
                                label_msgid="label_entry_funcionarios",
                                description_msgid="help_entry_funcionarios",
                                i18n_domain="guegue.alcaldias",
                                description="Funcionarios Responsables")),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Servicios',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Servicios...")),
    atapi.StringField('horario',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Horario de atención',
                                      label_msgid="label_entry_horario",
                                      description_msgid="help_entry_horario",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#GobiernoSchema['title'].storage = atapi.AnnotationStorage()
#GobiernoSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(GobiernoSchema, moveDiscussion=False)

class Gobierno(base.ATCTContent):
    """Gobierno Central en el municipio"""
    implements(IGobierno)

    portal_type = "Gobierno"
    schema = GobiernoSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Gobierno, PROJECTNAME)
